import re

# phon = input('请输入电话：')
# patter = "((13[0-9])|(14[5,7])|(15[0-9])|(17[0,3,7-9])|(18[0-9])|166(\d{8}))"
# result = re.findall(patter, phon)
# if (len(result) == 0):
#     print('格式    不正确！！')
# else:
#     print("格式正确")

from urllib import request

# src_pattern="url=([\s\S]*?)"
# url = 'https://www.panda.tv/cate/lol'
# r = request.urlopen(url)
# htmls=r.read()
# htmls=str(htmls,encoding='utf-8')
# src_htmls=re.findall(src_pattern,htmls)
# #print(htmls)
# print(src_pattern)
print(re.findall(r'docs','https://docs.python.org/3/whatsnew/3.6.html'))
#^匹配以'docs'开始的字符串
print(re.findall(r'^docs','docshttps://docs.python.org/3/whatsnew/3.6.html'))
#$匹配以'docs'结束的字符串
print(re.findall(r'docs$','docshttps://docs.python.org/3/whatsnew/3.6.htmldocs'))
#[...]匹配括号中的其中一个字符
print(re.findall(r'[t,w]h[a,zA,Z]','https://docs.python.org/3/whatsnew/3.6.htmldocs'))
#“d”是正则语法规则用来匹配0到9之间的数返回列表
regular_v5 = re.findall(r"\d","https://docs.python.org/3/whatsnew/3.6.html")
regular_v6 = re.findall(r"\d{3}","https://docs.python.org/3/whatsnew/3.6.html/1234")
regular_v7 = re.findall(r"\D","https://docs.python.org/3/whatsnew/3.6.html/1234")
#“w”在正则里面代表匹配从小写a到z,大写A到Z，数字0到9 “W”在正则里面代表匹配除了字母与数字以外的特殊符号
regular_v8 = re.findall(r"\W","https://docs.python.org/3/whatsnew/3.6.html")
print(regular_v5)
print(regular_v6)
print(regular_v7)
print (regular_v8)
#是否包含bi字符串或者出现的次数
v01=re.findall('bi','bibisdfbisadfbiadfqwefds23bi')
print(v01)
#^以bi开始的
v02=re.findall(r'^bi','bibisdfbisadfbiadfqwefds23bi')
v03=re.findall(r'bir$','bibisdfbisadfbiadfqwefds23bir')
v04=re.findall(r'[f3]bi','bibi45sd67fbisadbiadfqwefds23bir')
#\d\d\d 三位数字 等同于\d{3}
v05=re.findall(r'\d{2}','bibi45sd67fbisadbiadfqwefds23bir')
print(v02)
print(v03)
print(v04)
print(v05)
#这里括号()的用法表示匹配是取括号内里面的内容,
# 这里.*是正则贪婪匹配语法百话点就是贪心利益最大话最大范围的匹配准则如上图所示。
v06=re.findall(r'<div>(.*)</div>','<div>hello1</div><div>hell56o</div>')
#非贪婪模式
v07=re.findall(r'<div>(.*?)</div>','<div>hello1</div><div>hell56o</div>')
print(v06)
print(v07)
#re.I大小写通吃
v08=re.findall(r'<div>(hello)</div>','<div>hello</div><div>HELLO6O</div>',re.I)
v09=re.findall(r'<div>(hello)</div>','<div>hello</div><div>hell56o</div>')
print(v08)
print(v09)
#re.S换行符也可以匹配到
'''
re.I(re.IGNORECASE): 忽略大小写（括号内是完整写法，下同）
M(MULTILINE): 多行模式，改变'^'和'$'的行为（参见上图）
S(DOTALL): 点任意匹配模式，改变'.'的行为
L(LOCALE): 使预定字符类 \w \W \b \B \s \S 取决于当前区域设定
U(UNICODE): 使预定字符类 \w \W \b \B \s \S \d \D 取决于unicode定义的字符属性
X(VERBOSE): 详细模式。这个模式下正则表达式可以是多行，忽略空白字符，并可以加入注释。以下两个正则表达式是等价的：
'''
"""
1).(点)匹配除\n \r之外的任意字符 如果要包含 所有则用 \s\S \s:匹配任何不可见字符 \S匹配任何可见字符
2）？匹配前面的0次或1次 相当于{0，1}
3）+匹配前面的1次或n次 相当于{1，}
4)*匹配前面的z字表达式任意次 {0，}
"""

v10=re.findall(r'<div>(.*?)</div>','<div>hello</div><div>hello\sdf*\[]</div><div>HELLO6O</div>',re.I|re.S)
v11=re.findall(r'<div>(.*?)</div>','<div>hello</div><div>hello\sdf*\[]</div><div>HELLO6O</div>',re.I)
print(v10)
print(v11)

print('\\12')
